Skip to content

fix(engine): reset thrashing state when user removes reconcile-paused annotation#218

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift-virtualization:mainfrom
tiraboschi:CNV-89796
Jun 23, 2026
Merged

fix(engine): reset thrashing state when user removes reconcile-paused annotation#218
openshift-merge-bot[bot] merged 1 commit into
openshift-virtualization:mainfrom
tiraboschi:CNV-89796

Conversation

@tiraboschi

Copy link
Copy Markdown
Member

When a user removes the platform.kubevirt.io/reconcile-paused annotation to resume reconciliation, the in-memory ThrashingDetector state (consecutiveThrottles >= ThrashingThreshold) was never cleared.

If the token bucket was still empty at that point (< 6 s after the pause was set), the very next throttled reconciliation immediately re-paused the resource, making it permanently stuck.

Add Step 1.6 in ReconcileAsset: after the IsPaused guard returns false, check whether consecutiveThrottles has already reached the threshold. If so the operator previously set the annotation and the user just removed it, so reset the thrashing detector for that resource. Subsequent throttles now count from 0 and will not re-trigger a pause until a genuine new edit war accumulates enough consecutive throttles.

Fixes: CNV-89796

@github-actions

Copy link
Copy Markdown
Contributor

Generated Files Verification Failed

One or more generated files in this PR are out of sync:

  • CRDs: Run make update-crds if CRD verification failed
  • RBAC: Run make generate-rbac if RBAC verification failed

Please regenerate the files locally and commit the changes.

… annotation

When a user removes the platform.kubevirt.io/reconcile-paused annotation
to resume reconciliation, the in-memory ThrashingDetector state
(consecutiveThrottles >= ThrashingThreshold) was never cleared.

If the token bucket was still empty at that point (< 6 s after the pause
was set), the very next throttled reconciliation immediately re-paused the
resource, making it permanently stuck.

Add Step 1.6 in ReconcileAsset: after the IsPaused guard returns false,
check whether consecutiveThrottles has already reached the threshold.
If so the operator previously set the annotation and the user just removed
it, so reset the thrashing detector for that resource. Subsequent throttles
now count from 0 and will not re-trigger a pause until a genuine new edit
war accumulates enough consecutive throttles.

Fixes: CNV-89796

Signed-off-by: Simone Tiraboschi <stirabos@redhat.com>
@rlobillo

Copy link
Copy Markdown
Contributor

/lgtm

@tiraboschi

Copy link
Copy Markdown
Member Author

/approve

@openshift-ci

openshift-ci Bot commented Jun 23, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: tiraboschi

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot openshift-merge-bot Bot merged commit b2d9a36 into openshift-virtualization:main Jun 23, 2026
7 checks passed
@tiraboschi tiraboschi deleted the CNV-89796 branch June 23, 2026 10:07
@tiraboschi

Copy link
Copy Markdown
Member Author

/cherry-pick release-4.22

@openshift-cherrypick-robot

Copy link
Copy Markdown

@tiraboschi: new pull request created: #224

Details

In response to this:

/cherry-pick release-4.22

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants